#include <stdio.h>
#define N 5  // 奇数阶，如3、5、7等

int main() {
    int magic[N][N] = {0};
    int i = 0, j = N / 2;  // 起始位置：第一行中间列
    magic[i][j] = 1;
    
    for (int num = 2; num <= N * N; num++) {
        int ni = (i - 1 + N) % N;  // 上一行（越界则绕回）
        int nj = (j + 1) % N;      // 右一列（越界则绕回）
        
        if (magic[ni][nj] == 0) {  // 目标位置为空
            i = ni;
            j = nj;
        } else {  // 目标位置已有元素，向下走一格
            i = (i + 1) % N;
        }
        magic[i][j] = num;
    }
    
    // 打印魔方阵
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            printf("%4d", magic[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}